package com.atguigu.democustomer230301.controller;
import com.atguigu.democustomer230301.bean.User;
import com.atguigu.democustomer230301.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;

@RestController//标识这个类为Controller层
public class UserController {

    @Autowired
    private UserService UserService;

    //用来接受请求根据请求名 来确定由哪个方法处理
    //@RequestMapping默认可以接收所有类型的请求
    //也可以通过第二个参数来决定接收什么类型的请求 比如：
    // @RequestMapping(value = "hello",method = RequestMethod.GET)
    @RequestMapping(value = "/user")
    public String sayHello() {
        String result = UserService.sayJi();
        return result;
    }

    /**
     * 根绝id获取用户消息
     */
    @PostMapping(value = "/getUserById")
    public String getUserById(Integer id) {
        return UserService.getUserById(String.valueOf(id));
    }

    /**
     * 获取所有用户信息
     */
    @GetMapping(value = "/getAllUser")
    public String getAllUser() {
        return UserService.getAllUser();
    }

    /**
     * 根绝name获取用户消息
     */
    @PostMapping(value = "/getUserByName")
    public String getUserByName(String name) {
        return UserService.getUserByName(name);
    }

    /**
     * 根据id修改用户信息
     */
    @PutMapping(value = "/updataUser")
    public String updataUser(Integer id, String name, Integer age) {
        UserService.updateById(id, name, age);
        // 新建一个返回类型json格式的map对象
        Map<String, Object> response = new HashMap<>();
        response.put("code", 200);
        response.put("message", "修改成功");
        response.put("data", null);
        // 将map对象转换成json格式的字符串并返回
        return new Gson().toJson(response);
    }

    /**
     * 新增用户
     */
    @PostMapping(value = "/addUser")
    public String addUser(User user) {
        UserService.insertUser(user);
        // 新建一个返回类型json格式的map对象
        Map<String, Object> response = new HashMap<>();
        response.put("code", 200);
        response.put("message", "新增成功");
        response.put("data", null);
        // 将map对象转换成json格式的字符串并返回
        return new Gson().toJson(response);
    }

    /**
     * 删除一条数据
     */
    @DeleteMapping(value = "/deleteUserById")
    public String deleteUserById(Integer id) {
        UserService.deleteUserById(id);
        // 新建一个返回类型json格式的map对象
        Map<String, Object> response = new HashMap<>();
        response.put("code", 200);
        response.put("message", "删除成功");
        response.put("data", null);
        // 将map对象转换成json格式的字符串并返回
        return new Gson().toJson(response);
    }
}
